jQuery(document).ready(function()
    {
	// Por defecto, el formulario para actualizar la contraseña se encuentra oculto.
	jQuery("#table_actualizar").hide();



	// Boton que muestra el formulario para actualizar la contraseña y oculta el formulario de login.
	jQuery("#btn_actualizar").click(function()
        {
		jQuery('#table_login').hide("blind", {}, 300, function()
			{ jQuery('#table_actualizar').show("blind", {}, 300); });

		return false;
		});



	// Boton que oculta el formulario para actualizar la contraseña y muestra el formulario de login.
    jQuery("button[name='cancelar']").click(function()
        {
		jQuery('#table_actualizar').hide("blind", {}, 300, function()
			{ jQuery('#table_login').show("blind", {}, 300); });

		return false;
		});



	// Boton que oculta el formulario para actualizar la contraseña y muestra el formulario de login.
    jQuery("button .submit").click(function()
        {
		submit();
		return false;
		});



	// Comportamiento del formulario de login.
	jQuery("#form_login").submit( function()
		{
		// Obtengo el nombre y el password del usuario.
		var nombre = jQuery("#form_login [name=usuario]").val();
		var clave = jQuery("#form_login [name=clave]").val();

		// Verifico que ni el nombre ni la contraseña esten vacias.
		if(nombre.length == 0)
			{mostrarMsj("Error","Debe completar el nombre de usuario");}
		else if(clave.length == 0)
			{mostrarMsj("Error","Debe ingresar la contraseña");}
		else
			{
			// Muestro el mensaje de espera y llamo una funcion Ajax para que loguee al usuario.
			msjLoading("table_login",true);

			jQuery.ajax({
						type: 'POST',
						url: 'svcs/login.jsp',
						dataType: 'json',
						data: {'service': 'login',
							   'nombre': nombre,
							   'password': clave,
							   'timestamp': timestamp()},
						success: success_login,
						error: error_login
						});
			}

		return false;
		});



	// Comportamiento del formulario para actualizar la contraseña.
	jQuery("#form_actualizar").submit( function()
		{
		// Obtengo los datos del formulario.
		var nombre = jQuery("#form_actualizar [name=usuario]").val();
		var clave = jQuery("#form_actualizar [name=clave]").val();
		var claveN1 = jQuery("#form_actualizar [name=clave-nueva]").val();
		var claveN2 = jQuery("#form_actualizar [name=clave-nueva-bis]").val();

		// Verifico que los campos no esten vacios y que la password coincida con su confirmacion.
		if(nombre.length == 0)
			{mostrarMsj("Error","Debe completar el nombre de usuario");}
		else if(clave.length == 0)
			{mostrarMsj("Error","Debe ingresar la contraseña actual");}
		else if(claveN1.length == 0)
			{mostrarMsj("Error","Debe ingresar la contraseña nueva");}
		else if(claveN1 != claveN2)
			{mostrarMsj("Error","La contraseña nueva no coincide con su confirmación");}
		else
			{
			// Muestro el mensaje de espera y llamo una funcion Ajax para que loguee al usuario.
			msjLoading("table_actualizar",true);

			jQuery.ajax({
						type: 'POST',
						url: 'svcs/login.jsp',
						dataType: 'json',
						data: {'service': 'actualizar',
							   'nombre': nombre,
							   'password': clave,
							   'passwordNueva': claveN1,
							   'timestamp': timestamp()},
						success: success_login,
						error: error_login
						});
			}

		return false;
		});
    });



// Funcion callback que se invoca luego de una llamada AJAX exitosa.
function success_login(data, code, xmlHttpRequest)
	{
	// Oculto el mensaje de espera y veo el resultado de la operacion.
	// - Si fue exitosa, abro el menu principal.
	// - Si no se pudo loguear al usuario, muestro el mensaje explicativo.
	
	msjLoading("table_login", false);
	msjLoading("table_actualizar", false);

	if(data.code != '0')
		{ mostrarMsj("Error",data.msj); }
	else
		{ document.location.href="orden-alta.jsp"; }
	}



// Funcion callback que se invoca luego de una llamada AJAX fallida.
function error_login(xmlHttpRequest, type)
	{
	// Oculto el mensaje de espera y muestro un mensaje con la causa del error ocurrido.
	msjLoading("table_login", false);
	msjLoading("table_actualizar", false);

	mostrarMsj("Error","No se pudo establecer la conexión con el servidor: " + type + " " + xmlHttpRequest.status + " (" + xmlHttpRequest.statusText + ")");
	}
